<?php
declare(strict_types = 1);

namespace app\api\controller;

use app\api\business\User as BusinessUser;
use app\api\controller\AuthBase;
use app\api\validate\UserValidate;
use app\common\lib\Status;
use think\Request;

class User extends AuthBase
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        // 获取用户个人信息
        $result = (new BusinessUser)->getNoramlUserById($this->id);

        $userInfo = [
            'id' => $result->id,
            'username' => $result->username,
            'sex' => $result->sex
        ];

        return Status::show(config('status.success'), '登录成功！', $userInfo);
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        //
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        //
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        //
        $input = [
            'username' => input('put.username'),
            'sex' => input('put.sex')
        ];

        // 信息验证
        $validate = new UserValidate();
        if (!$validate->scene('userinfo')->check($input)) {
            return Status::show(config('status.error'), $validate->getError());
        }

        // 将用户信息传入business
        $result = (new BusinessUser)->update($this->id, $input);
        if (!$result) {
            return Status::show(config('status.error'), '更新失败！');
        }
        return Status::show(config('status.error'), '更新成功！');
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        //
    }
}
